package modelo.bd.dao;

import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import modelo.bd.exception.DAOException;
import modelo.dominio.Usuario;

public class UsuarioDAO extends AbstractDAO<Usuario> {

    @Override
    public void add(Usuario entity) throws DAOException {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    @Override
    public void deleteWhere(String condition) throws DAOException {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    @Override
    public void update(Usuario entity) throws DAOException {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    @Override
    protected ArrayList<Usuario> select() throws DAOException {
        try {
            con.crear();
            ResultSet resultado = con.ejecutarConsulta(getQuery());
            ArrayList<Usuario> usuarios = new ArrayList();
            while (resultado.next()) {
                Usuario us = new Usuario();
                us.setLogin(resultado.getString("LOGIN"));
                us.setContrasena(resultado.getString("CONTRASENA"));
                us.setNombre(resultado.getString("NOMBRE"));
                usuarios.add(us);
            }
            resultado.close();
            con.cerrar();
            return usuarios;
        } catch (ClassNotFoundException ex) {
            throw new DAOException("Error al crear la conexion " + ex.getMessage());
        } catch (SQLException ex) {
            throw new DAOException("Error en DAO Usuario " + ex.getMessage());
        } catch (Exception ex) {
            throw new DAOException("Error en el archivo de propiedades " + ex.getMessage());
        }
    }

    @Override
    public ArrayList<Usuario> selectAll() throws DAOException {
        this.setQuery("SELECT * "
                + "FROM scc_usuarios_perfil "
                + "USPE_TIPO = 'U' "
                + "AND USPE_ACTIVO = 'A'");
        return select();
    }

    @Override
    public ArrayList<Usuario> selectWhere(String condition) throws DAOException {
        this.setQuery("SELECT USPE_CLAVE AS LOGIN, USPE_PASSWORD AS CONTRASENA, USPE_NOMBRE AS NOMBRE "
                + "FROM scc_usuarios_perfil "
                + "WHERE " + condition
                + " AND USPE_TIPO = 'U' "
                + "AND USPE_ACTIVO = 'A'");
        return select();
    }
}
